package com.oliet.util;

import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import io.jsonwebtoken.security.Keys;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;

import java.util.Base64;

/**
 * @author jiaZhenpeng
 * @Title: Test
 * @Package com.oliet.util
 * @Description:
 * @date 2023-11-30 17:13
 */
public class Test {


    public static void generateEncryptionPassword(String rawPassword) {
        // 使用BCryptPasswordEncoder加密密码
        PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
        String encodedPassword = passwordEncoder.encode(rawPassword);

        System.out.println("Raw Password: " + rawPassword);
        System.out.println("Encoded Password: " + encodedPassword);

    }

    private static String generateRandomPassword() {
        // 在实际应用中，您可能会使用更复杂的逻辑生成随机密码
        return "123";
    }

    public static void main(String[] args) {
        // 使用 Keys 类的 secretKeyFor 方法创建足够安全的密钥
        byte[] keyBytes = Keys.secretKeyFor(SignatureAlgorithm.HS512).getEncoded();
        // 将 byte[] 转换为 Base64 编码的字符串
        String base64EncodedKey = Base64.getEncoder().encodeToString(keyBytes);

        System.out.println("Base64 Encoded Key: " + base64EncodedKey);
        // 使用生成的密钥进行 JWT 签名等操作
        String jwt = Jwts.builder()
                .setSubject("example")
                .signWith(SignatureAlgorithm.HS512, keyBytes)
                .compact();

        System.out.println("Generated JWT: " + jwt);
    }
}
